"""
7-6 清点代码库
上图转自新浪微博：“阿里代码库有几亿行代码，但其中有很多功能重复的代码，
比如单单快排就被重写了几百遍。请设计一个程序，能够将代码库中所有功能重复的代码找出。
各位大佬有啥想法，我当时就懵了，然后就挂了。。。”

这里我们把问题简化一下：首先假设两个功能模块如果接受同样的输入，
总是给出同样的输出，则它们就是功能重复的；其次我们把每个模块的输出都简化为一个整数
（在 int 范围内）。于是我们可以设计一系列输入，检查所有功能模块的对应输出，
从而查出功能重复的代码。你的任务就是设计并实现这个简化问题的解决方案。
"""


# resolution1只能得22分，最后一个测试点过不了....
def resolution1():
    lines = input().split(" ")
    N = int(lines[0])
    M = int(lines[1])
    # 统计
    dict = {}
    for i in range(N):
        line = input()
        if dict.get(line) is None:
            dict[line] = 1
        else:
            dict[line] += 1
    # 排序
    sorted_dict = sorted(dict.items(), key=lambda x: (-x[1], [int(k) for k in x[0].split(" ")]))
    # print(sorted_dict)
    # 输出
    print(len(sorted_dict))
    # 依次输出
    for item in sorted_dict:
        print(item[1], item[0])


def resolution2():
    dic = {}
    n, m = map(int, input().split())
    for i in range(n):
        s = list(map(int, input().split()))
        s = tuple(s)  # 要先转化成元组，字典只能对元组而不能对列表统计
        if s not in dic:
            dic[s] = 1
        else:
            dic[s] += 1
    a = sorted(dic.items(), key=lambda x: (-x[1], x[0]))
    print(len(a))
    for i in range(len(a)):
        print(str(a[i][1]) + ' ' + ' '.join((map(str, a[i][0]))))


if __name__ == '__main__':
    # resolution1()
    resolution2()